package com.ftg.mall.base.util.tooltips;

/**
 * 通用异常处理状态封装类，
 * 后期开发时间可根据基本信息作扩展
 * @author kangjx
 * @date 2022-10-04
 */
@SuppressWarnings("all")
public enum ResposeEnum {

    /**
     * 操作成功提示处理
     */
    SUCCESS(200, TipEnum.SUCCESS_TIP),

    /***
     * 传入参数不对
     */
    FAIL_INVALID_PARAM(4000, TipEnum.FAIL_INVALID_PARAM_TIP),

    /***
     * Token无效或已过期
     */
    FAIL_INVALID_TOKEN(4001, TipEnum.FAIL_INVALID_TOKEN_TIP),

    /***
     * 没有权限执行该操作
     */
    FAIL_NO_PERMISSION(4003, TipEnum.FAIL_NO_PERMISSION_TIP),

    /***
     * 请求资源不存在
     */
    FAIL_NOT_FOUND(4004, TipEnum.FAIL_NOT_FOUND_TIP),

    /***
     * 数据校验不通过
     */
    FAIL_VALIDATION(4005, TipEnum.FAIL_VALIDATION_TIP),

    /***
     * 操作执行失败
     */
    FAIL_OPERATION(4006, TipEnum.FAIL_OPERATION_TIP),

    /**
     * 请求连接超时
     */
    FAIL_REQUEST_TIMEOUT(4008, TipEnum.FAIL_REQUEST_TIMEOUT_TIP),

    /***
     * 认证不通过（用户名密码错误等认证失败场景）
     */
    FAIL_AUTHENTICATION(4009, TipEnum.FAIL_AUTHENTICATION_TIP),

    /**
     * 账号无效
     */
    FAIL_INVALID_ACCOUNT(4012, TipEnum.FAIL_INVALID_ACCOUNT_TIP),

    /***
     * 系统异常
     */
    FAIL_EXCEPTION(5000, TipEnum.FAIL_EXCEPTION_TIP),

    /**
     * 服务不可用
     */
    FAIL_SERVICE_UNAVAILABLE(5003, TipEnum.FAIL_SERVICE_UNAVAILABLE_TIP),

    /**
     * 部分成功（一般用于批量处理场景，只处理筛选后的合法数据）
     */
    WARN_PARTIAL_SUCCESS(1001, TipEnum.WARN_PARTIAL_SUCCESS_TIP),

    /**
     * 操作成功，但是数据库里面没有数据，一般用来于查询没有返回数据的情况
     */
    SUCCESS_NO_DATA(2001, TipEnum.SUCCESS_NO_DATA_TIP),

    /**
     * 操作已失败
     */
    FAILURE(5000, TipEnum.FAILURE_TIP),


    /**
     * 添加、修改、删除时数据不存在情况
     */
    NO_DATA(5001, TipEnum.NO_DATA_TIP),

    /**
     * 添加、修改、删除时 对数据库操作失败情况
     */
    FAIL_DML(5002, TipEnum.FAIL_DML_TIP),


    /**
     * 404
     */
    NOT_FOUND_404(404, TipEnum.NOTFOUND_TIP);

    private Integer code;
    private String msg;

    ResposeEnum(Integer code,String msg){
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
